.class public final Lo;
.super Ljava/lang/Object;


# direct methods
.method public constructor <init>()V
    .locals 0

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private static Code(I[I)I
    .locals 2

    move v0, p0

    :cond_0
    aget v1, p1, v0

    if-nez v1, :cond_1

    add-int/lit8 v0, v0, 0x1

    array-length v1, p1

    if-ne v0, v1, :cond_0

    const/4 v0, 0x0

    :goto_0
    return v0

    :cond_1
    array-length v1, p1

    sub-int v0, v1, v0

    goto :goto_0
.end method

.method public static Code([I[I)[I
    .locals 5

    const/4 v4, 0x0

    array-length v0, p1

    new-array v0, v0, [I

    array-length v1, p1

    shl-int/lit8 v1, v1, 0x1

    new-array v1, v1, [I

    invoke-static {v1, p0, p0}, Lo;->Code([I[I[I)[I

    invoke-static {v1, p1}, Lo;->I([I[I)V

    array-length v2, v1

    array-length v3, v0

    sub-int/2addr v2, v3

    array-length v3, v0

    invoke-static {v1, v2, v0, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    move v2, v4

    :goto_0
    array-length v3, v1

    if-ge v2, v3, :cond_0

    aput v4, v1, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_0

    :cond_0
    invoke-static {v1, v0, p0}, Lo;->Code([I[I[I)[I

    invoke-static {v1, p1}, Lo;->I([I[I)V

    array-length v2, v1

    array-length v3, v0

    sub-int/2addr v2, v3

    array-length v3, v0

    invoke-static {v1, v2, v0, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    return-object v0
.end method

.method private static Code([I[I[I)[I
    .locals 16

    move-object/from16 v0, p2

    array-length v0, v0

    move v1, v0

    const/4 v2, 0x1

    sub-int/2addr v1, v2

    :goto_0
    if-ltz v1, :cond_1

    aget v2, p2, v1

    int-to-long v2, v2

    const-wide v4, 0xffffffffL

    and-long/2addr v2, v4

    const-wide/16 v4, 0x0

    move-object/from16 v0, p1

    array-length v0, v0

    move v6, v0

    const/4 v7, 0x1

    sub-int/2addr v6, v7

    move v13, v6

    move-wide v14, v4

    move-wide v5, v14

    move v4, v13

    :goto_1
    if-ltz v4, :cond_0

    aget v7, p1, v4

    int-to-long v7, v7

    const-wide v9, 0xffffffffL

    and-long/2addr v7, v9

    mul-long/2addr v7, v2

    add-int v9, v1, v4

    add-int/lit8 v9, v9, 0x1

    aget v9, p0, v9

    int-to-long v9, v9

    const-wide v11, 0xffffffffL

    and-long/2addr v9, v11

    add-long/2addr v7, v9

    add-long/2addr v5, v7

    add-int v7, v1, v4

    add-int/lit8 v7, v7, 0x1

    long-to-int v8, v5

    aput v8, p0, v7

    const/16 v7, 0x20

    ushr-long/2addr v5, v7

    add-int/lit8 v4, v4, -0x1

    goto :goto_1

    :cond_0
    long-to-int v2, v5

    aput v2, p0, v1

    add-int/lit8 v1, v1, -0x1

    goto :goto_0

    :cond_1
    return-object p0
.end method

.method private static I([I[I)V
    .locals 21

    move-object/from16 v0, p0

    array-length v0, v0

    move v5, v0

    const/4 v6, 0x0

    move v0, v6

    move-object/from16 v1, p0

    invoke-static {v0, v1}, Lo;->Code(I[I)I

    move-result v6

    sub-int/2addr v5, v6

    move-object/from16 v0, p1

    array-length v0, v0

    move v6, v0

    const/4 v7, 0x0

    move v0, v7

    move-object/from16 v1, p1

    invoke-static {v0, v1}, Lo;->Code(I[I)I

    move-result v7

    sub-int/2addr v6, v7

    move-object/from16 v0, p0

    array-length v0, v0

    move v7, v0

    sub-int/2addr v7, v5

    move-object/from16 v0, p1

    array-length v0, v0

    move v8, v0

    sub-int/2addr v8, v6

    sub-int/2addr v7, v8

    move-object/from16 v0, p1

    array-length v0, v0

    move v8, v0

    sub-int/2addr v8, v6

    add-int/2addr v8, v7

    new-array v8, v8, [I

    shl-int/lit8 v7, v7, 0x5

    :goto_0
    if-ltz v7, :cond_6

    ushr-int/lit8 v9, v7, 0x5

    and-int/lit8 v10, v7, 0x1f

    move-object/from16 v0, p1

    array-length v0, v0

    move v11, v0

    sub-int/2addr v11, v6

    if-nez v10, :cond_1

    array-length v10, v8

    sub-int/2addr v10, v11

    sub-int/2addr v10, v9

    move-object/from16 v0, p1

    move v1, v6

    move-object v2, v8

    move v3, v10

    move v4, v11

    invoke-static {v0, v1, v2, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    :goto_1
    array-length v10, v8

    sub-int/2addr v10, v11

    sub-int v9, v10, v9

    :cond_0
    move-object/from16 v0, p0

    array-length v0, v0

    move v10, v0

    move v0, v5

    move-object/from16 v1, p0

    invoke-static {v0, v1}, Lo;->Code(I[I)I

    move-result v11

    sub-int/2addr v10, v11

    array-length v11, v8

    invoke-static {v9, v8}, Lo;->Code(I[I)I

    move-result v12

    sub-int/2addr v11, v12

    move-object/from16 v0, p0

    array-length v0, v0

    move v12, v0

    sub-int/2addr v12, v10

    array-length v13, v8

    sub-int/2addr v13, v11

    if-eq v12, v13, :cond_8

    move-object/from16 v0, p0

    array-length v0, v0

    move v12, v0

    sub-int v10, v12, v10

    array-length v12, v8

    sub-int v11, v12, v11

    sub-int/2addr v10, v11

    :goto_2
    if-ltz v10, :cond_5

    move-object/from16 v0, p0

    array-length v0, v0

    move v10, v0

    const/4 v11, 0x1

    sub-int/2addr v10, v11

    array-length v11, v8

    const/4 v12, 0x1

    sub-int/2addr v11, v12

    const/4 v12, 0x0

    move/from16 v20, v12

    move v12, v10

    move/from16 v10, v20

    :goto_3
    aget v13, p0, v12

    int-to-long v13, v13

    const-wide v15, 0xffffffffL

    and-long/2addr v13, v15

    add-int/lit8 v15, v11, -0x1

    aget v11, v8, v11

    move v0, v11

    int-to-long v0, v0

    move-wide/from16 v16, v0

    const-wide v18, 0xffffffffL

    and-long v16, v16, v18

    sub-long v13, v13, v16

    int-to-long v10, v10

    add-long/2addr v10, v13

    add-int/lit8 v13, v12, -0x1

    long-to-int v14, v10

    aput v14, p0, v12

    const/16 v12, 0x3f

    shr-long v16, v10, v12

    move-wide/from16 v0, v16

    long-to-int v0, v0

    move v12, v0

    if-ge v15, v9, :cond_7

    :goto_4
    if-lt v13, v5, :cond_0

    const-wide/16 v14, 0x0

    cmp-long v10, v10, v14

    if-gez v10, :cond_0

    aget v10, p0, v13

    int-to-long v10, v10

    const-wide v14, 0xffffffffL

    and-long/2addr v10, v14

    int-to-long v14, v12

    add-long/2addr v10, v14

    add-int/lit8 v14, v13, -0x1

    long-to-int v15, v10

    aput v15, p0, v13

    move v13, v14

    goto :goto_4

    :cond_1
    const/16 v12, 0x20

    sub-int/2addr v12, v10

    aget v13, p1, v6

    ushr-int/2addr v13, v12

    if-eqz v13, :cond_2

    add-int/lit8 v9, v9, 0x1

    :cond_2
    array-length v14, v8

    sub-int/2addr v14, v11

    sub-int/2addr v14, v9

    if-eqz v13, :cond_9

    add-int/lit8 v15, v14, 0x1

    aput v13, v8, v14

    move v13, v15

    :goto_5
    aget v14, p1, v6

    add-int/lit8 v15, v6, 0x1

    move/from16 v20, v15

    move v15, v13

    move/from16 v13, v20

    :goto_6
    if-ge v13, v11, :cond_3

    aget v16, p1, v13

    add-int/lit8 v17, v15, 0x1

    shl-int/2addr v14, v10

    ushr-int v18, v16, v12

    or-int v14, v14, v18

    aput v14, v8, v15

    add-int/lit8 v13, v13, 0x1

    move/from16 v14, v16

    move/from16 v15, v17

    goto :goto_6

    :cond_3
    add-int v12, v11, v6

    const/4 v13, 0x1

    sub-int/2addr v12, v13

    aget v12, p1, v12

    shl-int v10, v12, v10

    aput v10, v8, v15

    goto/16 :goto_1

    :goto_7
    move-object/from16 v0, p0

    array-length v0, v0

    move v12, v0

    const/4 v13, 0x1

    sub-int/2addr v12, v13

    if-ge v11, v12, :cond_4

    aget v12, p0, v11

    aget v13, v8, v10

    if-ne v12, v13, :cond_4

    add-int/lit8 v11, v11, 0x1

    add-int/lit8 v10, v10, 0x1

    goto :goto_7

    :cond_4
    aget v11, p0, v11

    int-to-long v11, v11

    const-wide v13, 0xffffffffL

    and-long/2addr v11, v13

    aget v10, v8, v10

    int-to-long v13, v10

    const-wide v15, 0xffffffffL

    and-long/2addr v13, v15

    sub-long v10, v11, v13

    const/16 v12, 0x3f

    shr-long/2addr v10, v12

    long-to-int v10, v10

    goto/16 :goto_2

    :cond_5
    add-int/lit8 v7, v7, -0x1

    goto/16 :goto_0

    :cond_6
    return-void

    :cond_7
    move v10, v12

    move v11, v15

    move v12, v13

    goto/16 :goto_3

    :cond_8
    move/from16 v20, v11

    move v11, v10

    move/from16 v10, v20

    goto :goto_7

    :cond_9
    move v13, v14

    goto :goto_5
.end method
